<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libxlsxwriter: Working with Object Positioning</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libxlsxwriter
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">Working with Object Positioning </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Libxlsxwriter positions worksheet objects such as images and charts in worksheets by calculating precise co-ordinates based on the object size, it's DPI (for images) and any scaling that the user specifies. It also takes into account the heights and widths of the rows and columns that the object crosses. In this way objects maintain their original sizes even if the rows or columns underneath change size or are hidden.</p>
<p>For example:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;xlsxwriter.h&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main() {</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="structlxw__workbook.html">lxw_workbook</a>  *workbook  = <a class="code" href="workbook_8h.html#a1cf96608a23ee4eb0e8467c15240d00b">workbook_new</a>(<span class="stringliteral">&quot;images.xlsx&quot;</span>);</div>
<div class="line">    <a class="code" href="structlxw__worksheet.html">lxw_worksheet</a> *worksheet = <a class="code" href="workbook_8h.html#a81d456b4f65a464e78e4a0030ecc3c2e">workbook_add_worksheet</a>(workbook, NULL);</div>
<div class="line"> </div>
<div class="line">    <span class="comment">// Original image.</span></div>
<div class="line">    <a class="code" href="worksheet_8h.html#a4529d77bcefcf478b8209f46fe730f6f">worksheet_insert_image</a>(worksheet, <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;B2&quot;</span>), <span class="stringliteral">&quot;logo.png&quot;</span>);</div>
<div class="line"> </div>
<div class="line">    <span class="comment">// Same as original, despite row/col changes.</span></div>
<div class="line">    <a class="code" href="worksheet_8h.html#a4529d77bcefcf478b8209f46fe730f6f">worksheet_insert_image</a>(worksheet, <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;E8&quot;</span>), <span class="stringliteral">&quot;logo.png&quot;</span>);</div>
<div class="line"> </div>
<div class="line">    <span class="comment">// Make column F narrower.</span></div>
<div class="line">    <a class="code" href="worksheet_8h.html#a9656e4e05d3787eee6b3e4d8e82d9b7f">worksheet_set_column</a>(worksheet, <a class="code" href="utility_8h.html#a189672bfa9c380a28d8db8c40de17fe8">COLS</a>(<span class="stringliteral">&quot;F:F&quot;</span>), 2, NULL);</div>
<div class="line"> </div>
<div class="line">    <span class="comment">// Hide row 12 (zero indexed).</span></div>
<div class="line">    <a class="code" href="structlxw__row__col__options.html">lxw_row_col_options</a> row_options = {.<a class="code" href="structlxw__row__col__options.html#a0e46063d954292f4018ecb91621b7562">hidden</a> = <a class="code" href="common_8h.html#a57bffaf0ff3cb4e9f4f7f2b0b6dad349a7850bcc34c18efe2e45372f4069be0bf">LXW_TRUE</a>};</div>
<div class="line">    <a class="code" href="worksheet_8h.html#abbc2de45e0aa84341fb10a98778b3807">worksheet_set_row_opt</a>(worksheet, 11, <a class="code" href="worksheet_8h.html#a8901b9706d1c48c28c97e95b452a927a">LXW_DEF_ROW_HEIGHT</a>, NULL, &amp;row_options);</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="workbook_8h.html#ad9e7aeebc0fd43562db5bcd527b2ee5e">workbook_close</a>(workbook);</div>
<div class="line"> </div>
<div class="line">    <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --><div class="image">
<img src="object_position1.png" alt=""/>
</div>
<p>As can be seen the inserted images are the same size even though the second image crosses changed rows and columns.</p>
<p>However, there are two cases where the image scale may change with row or columns changes. These are explained in the next two sections.</p>
<h1><a class="anchor" id="ww_object_position_scaling"></a>
Object scaling due to automatic row height adjustment</h1>
<p>The scaling of a image may be affected if is crosses a row that has its default height changed due to a font that is larger than the default font size or that has text wrapping turned on. In these cases Excel will automatically calculate a row height based on the text when it loads the file. Since this row height isn't available to Libxlsxwriter when it creates the file the object may appear as if it is sized incorrectly. For example::</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;xlsxwriter.h&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main() {</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="structlxw__workbook.html">lxw_workbook</a>  *workbook  = <a class="code" href="workbook_8h.html#a1cf96608a23ee4eb0e8467c15240d00b">workbook_new</a>(<span class="stringliteral">&quot;images.xlsx&quot;</span>);</div>
<div class="line">    <a class="code" href="structlxw__worksheet.html">lxw_worksheet</a> *worksheet = <a class="code" href="workbook_8h.html#a81d456b4f65a464e78e4a0030ecc3c2e">workbook_add_worksheet</a>(workbook, NULL);</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="structlxw__format.html">lxw_format</a> *wrap = <a class="code" href="workbook_8h.html#a279a5d7075d09a3931aae9782afede33">workbook_add_format</a>(workbook);</div>
<div class="line">    <a class="code" href="format_8h.html#a56d55dd9257d8f0645c62b296d2c196d">format_set_text_wrap</a>(wrap);</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="worksheet_8h.html#ac208046e7a6d12cc87982422efa41b31">worksheet_write_string</a>(worksheet,  <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;A10&quot;</span>), <span class="stringliteral">&quot;Some text that wraps&quot;</span>, wrap);</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="worksheet_8h.html#a4529d77bcefcf478b8209f46fe730f6f">worksheet_insert_image</a>(worksheet, <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;B1&quot;</span>),  <span class="stringliteral">&quot;logo.png&quot;</span>);</div>
<div class="line">    <a class="code" href="worksheet_8h.html#a4529d77bcefcf478b8209f46fe730f6f">worksheet_insert_image</a>(worksheet, <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;B10&quot;</span>), <span class="stringliteral">&quot;logo.png&quot;</span>);</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="workbook_8h.html#ad9e7aeebc0fd43562db5bcd527b2ee5e">workbook_close</a>(workbook);</div>
<div class="line"> </div>
<div class="line">    <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --><div class="image">
<img src="object_position2.png" alt=""/>
</div>
<p>As can be seen the second inserted image is distorted, compared to the first, due to the row being scaled automatically. To avoid this you should explicitly set the height of the row using <code><a class="el" href="worksheet_8h.html#ab9b7fb95e1bd9b0da70befd0d37a9173" title="Set the properties for a row of cells.">worksheet_set_row()</a></code> if it crosses an inserted object.</p>
<h1><a class="anchor" id="ww_object_position_options"></a>
Object Positioning with Cell Moving and Sizing</h1>
<p>Excel supports three options for "Object Positioning" within a worksheet:</p>
<div class="image">
<img src="object_position3.png" alt=""/>
</div>
<p>Image and chart objects in Libxlsxwriter emulate these options using the <code>object_position</code> parameter in <a class="el" href="structlxw__image__options.html" title="Options for inserted images.">lxw_image_options</a> and <a class="el" href="structlxw__chart__options.html" title="Options for inserted charts.">lxw_chart_options</a>:</p>
<div class="fragment"><div class="line"><a class="code" href="structlxw__image__options.html">lxw_image_options</a> options = {.object_position = <a class="code" href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81a3a7fd9f3ceaa180ddba415b8b7d80f68">LXW_OBJECT_MOVE_AND_SIZE</a>};</div>
<div class="line"><a class="code" href="worksheet_8h.html#a0b05e75e2c2a5c3452374714cdb2b79b">worksheet_insert_image_opt</a>(worksheet, <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;E9&quot;</span>), <span class="stringliteral">&quot;red.png&quot;</span>, &amp;options);</div>
</div><!-- fragment --><p>Where <code>object_position</code> has one of the following allowable values from <a class="el" href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81">lxw_object_position</a>:</p>
<ol type="1">
<li><a class="el" href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81a3a7fd9f3ceaa180ddba415b8b7d80f68">LXW_OBJECT_MOVE_AND_SIZE</a>: Move and size with cells. This is the Excel default for charts.</li>
<li><a class="el" href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81ae8e56c6314407205b48e9e8085926182">LXW_OBJECT_MOVE_DONT_SIZE</a>: Move but don’t size with cells. This is the Excel default for images.</li>
<li><a class="el" href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81a2ce8ef5e158013c4872d312fb6b2e1a4">LXW_OBJECT_DONT_MOVE_DONT_SIZE</a>: Don’t move or size with cells.</li>
<li><a class="el" href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81a833c0825a5e212ad263a20346d972a93">LXW_OBJECT_MOVE_AND_SIZE_AFTER</a>: Same as Option 1 to "move and size with
   cells" except Libxlsxwriter applies hidden cells after the object is inserted.</li>
</ol>
<p>Option 4 appears in Excel as Option 1. However, the worksheet object is sized to take hidden rows or columns into account. This allows the user to hide an image in a cell, possibly as part of an autofilter. For example:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;xlsxwriter.h&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main() {</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="structlxw__workbook.html">lxw_workbook</a>  *workbook  = <a class="code" href="workbook_8h.html#a1cf96608a23ee4eb0e8467c15240d00b">workbook_new</a>(<span class="stringliteral">&quot;images.xlsx&quot;</span>);</div>
<div class="line">    <a class="code" href="structlxw__worksheet.html">lxw_worksheet</a> *worksheet = <a class="code" href="workbook_8h.html#a81d456b4f65a464e78e4a0030ecc3c2e">workbook_add_worksheet</a>(workbook, NULL);</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="structlxw__image__options.html">lxw_image_options</a> image_options = {.<a class="code" href="structlxw__image__options.html#a3affe5a43c455cc61f8e56a0d6d742d4">object_position</a> = <a class="code" href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81a833c0825a5e212ad263a20346d972a93">LXW_OBJECT_MOVE_AND_SIZE_AFTER</a>};</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="worksheet_8h.html#a4529d77bcefcf478b8209f46fe730f6f">worksheet_insert_image</a>(    worksheet, <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;B4&quot;</span>), <span class="stringliteral">&quot;logo.png&quot;</span>);</div>
<div class="line">    <a class="code" href="worksheet_8h.html#a0b05e75e2c2a5c3452374714cdb2b79b">worksheet_insert_image_opt</a>(worksheet, <a class="code" href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a>(<span class="stringliteral">&quot;B13&quot;</span>),  <span class="stringliteral">&quot;logo.png&quot;</span>, &amp;image_options);</div>
<div class="line"> </div>
<div class="line">    <span class="comment">// Hide the rows that contain the images.</span></div>
<div class="line">    <a class="code" href="structlxw__row__col__options.html">lxw_row_col_options</a> row_options = {.<a class="code" href="structlxw__row__col__options.html#a0e46063d954292f4018ecb91621b7562">hidden</a> = <a class="code" href="common_8h.html#a57bffaf0ff3cb4e9f4f7f2b0b6dad349a7850bcc34c18efe2e45372f4069be0bf">LXW_TRUE</a>};</div>
<div class="line">    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> row_num = 1; row_num &lt; 22; row_num++)</div>
<div class="line">        <a class="code" href="worksheet_8h.html#abbc2de45e0aa84341fb10a98778b3807">worksheet_set_row_opt</a>(worksheet, row_num, <a class="code" href="worksheet_8h.html#a8901b9706d1c48c28c97e95b452a927a">LXW_DEF_ROW_HEIGHT</a>, NULL, &amp;row_options);</div>
<div class="line"> </div>
<div class="line">    <a class="code" href="workbook_8h.html#ad9e7aeebc0fd43562db5bcd527b2ee5e">workbook_close</a>(workbook);</div>
<div class="line"> </div>
<div class="line">    <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --><div class="image">
<img src="object_position4.png" alt=""/>
</div>
<p>In this example the first inserted image is visible over the hidden rows whilst the second image is hidden with the rows. Unhiding the rows in Excel would reveal the second image.</p>
<h1><a class="anchor" id="ww_object_position_sizing"></a>
Image sizing and DPI</h1>
<p>When an image is imported into Excel the DPI (dots per inch) resolution of the image is taken into account. Excel sizes the image according to a base DPI of 96 dpi. Therefore an image with a DPI of 72 may appear slightly larger when imported into Excel while an image with a DPI of 200 may appear twice as small. Libxlsxwriter also reads the DPI of the images that the user inserts into a worksheet and stores the image dimensions in the same way that Excel does. If it cannot determine the DPI of the image it uses a default of 96.</p>
<h1><a class="anchor" id="ww_object_position_image_issues"></a>
Reporting issues with image insertion</h1>
<p>A lot of work has gone into ensuring that Libxlsxwriter inserts images into worksheets in exactly the same way that Excel does, even though the required calculations and units are arcane. There are over 80 test cases that check image insertion against files created in Excel to ensure that Libxlsxwriter's handling of images is correct.</p>
<p>As such, before reporting any issues with image handling in Libxlsxwriter please check how the same image is handled in Excel (not OpenOffice, LibreOffice or other third party applications). If you do report an issue please use the Libxlsxwriter <a href="https://github.com/jmcnamara/libxlsxwriter/issues">Issue tracker is on GitHub</a> that demonstrates the issue.</p>
<p>Next: <a class="el" href="working_with_data_validation.html">Working with Data Validation</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
<div class="ttc" id="astructlxw__row__col__options_html"><div class="ttname"><a href="structlxw__row__col__options.html">lxw_row_col_options</a></div><div class="ttdoc">Options for rows and columns.</div><div class="ttdef"><b>Definition:</b> worksheet.h:716</div></div>
<div class="ttc" id="aworkbook_8h_html_ad9e7aeebc0fd43562db5bcd527b2ee5e"><div class="ttname"><a href="workbook_8h.html#ad9e7aeebc0fd43562db5bcd527b2ee5e">workbook_close</a></div><div class="ttdeci">lxw_error workbook_close(lxw_workbook *workbook)</div><div class="ttdoc">Close the Workbook object and write the XLSX file.</div></div>
<div class="ttc" id="aformat_8h_html_a56d55dd9257d8f0645c62b296d2c196d"><div class="ttname"><a href="format_8h.html#a56d55dd9257d8f0645c62b296d2c196d">format_set_text_wrap</a></div><div class="ttdeci">void format_set_text_wrap(lxw_format *format)</div><div class="ttdoc">Wrap text in a cell.</div></div>
<div class="ttc" id="aworksheet_8h_html_a8901b9706d1c48c28c97e95b452a927a"><div class="ttname"><a href="worksheet_8h.html#a8901b9706d1c48c28c97e95b452a927a">LXW_DEF_ROW_HEIGHT</a></div><div class="ttdeci">#define LXW_DEF_ROW_HEIGHT</div><div class="ttdef"><b>Definition:</b> worksheet.h:76</div></div>
<div class="ttc" id="aworkbook_8h_html_a1cf96608a23ee4eb0e8467c15240d00b"><div class="ttname"><a href="workbook_8h.html#a1cf96608a23ee4eb0e8467c15240d00b">workbook_new</a></div><div class="ttdeci">lxw_workbook * workbook_new(const char *filename)</div><div class="ttdoc">Create a new workbook object.</div></div>
<div class="ttc" id="aworksheet_8h_html_abbc2de45e0aa84341fb10a98778b3807"><div class="ttname"><a href="worksheet_8h.html#abbc2de45e0aa84341fb10a98778b3807">worksheet_set_row_opt</a></div><div class="ttdeci">lxw_error worksheet_set_row_opt(lxw_worksheet *worksheet, lxw_row_t row, double height, lxw_format *format, lxw_row_col_options *options)</div><div class="ttdoc">Set the properties for a row of cells.</div></div>
<div class="ttc" id="aworksheet_8h_html_a4529d77bcefcf478b8209f46fe730f6f"><div class="ttname"><a href="worksheet_8h.html#a4529d77bcefcf478b8209f46fe730f6f">worksheet_insert_image</a></div><div class="ttdeci">lxw_error worksheet_insert_image(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col, const char *filename)</div><div class="ttdoc">Insert an image in a worksheet cell.</div></div>
<div class="ttc" id="astructlxw__worksheet_html"><div class="ttname"><a href="structlxw__worksheet.html">lxw_worksheet</a></div><div class="ttdoc">Struct to represent an Excel worksheet.</div><div class="ttdef"><b>Definition:</b> worksheet.h:1603</div></div>
<div class="ttc" id="astructlxw__format_html"><div class="ttname"><a href="structlxw__format.html">lxw_format</a></div><div class="ttdoc">Struct to represent the formatting properties of an Excel format.</div><div class="ttdef"><b>Definition:</b> format.h:358</div></div>
<div class="ttc" id="aworksheet_8h_html_a915c52f231594642bad90422c5b2cf81a833c0825a5e212ad263a20346d972a93"><div class="ttname"><a href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81a833c0825a5e212ad263a20346d972a93">LXW_OBJECT_MOVE_AND_SIZE_AFTER</a></div><div class="ttdeci">@ LXW_OBJECT_MOVE_AND_SIZE_AFTER</div><div class="ttdef"><b>Definition:</b> worksheet.h:551</div></div>
<div class="ttc" id="acommon_8h_html_a57bffaf0ff3cb4e9f4f7f2b0b6dad349a7850bcc34c18efe2e45372f4069be0bf"><div class="ttname"><a href="common_8h.html#a57bffaf0ff3cb4e9f4f7f2b0b6dad349a7850bcc34c18efe2e45372f4069be0bf">LXW_TRUE</a></div><div class="ttdeci">@ LXW_TRUE</div><div class="ttdef"><b>Definition:</b> common.h:53</div></div>
<div class="ttc" id="autility_8h_html_a189672bfa9c380a28d8db8c40de17fe8"><div class="ttname"><a href="utility_8h.html#a189672bfa9c380a28d8db8c40de17fe8">COLS</a></div><div class="ttdeci">#define COLS(cols)</div><div class="ttdoc">Convert an Excel A:B column range into a (col1, col2) pair.</div><div class="ttdef"><b>Definition:</b> utility.h:63</div></div>
<div class="ttc" id="aworksheet_8h_html_a915c52f231594642bad90422c5b2cf81a3a7fd9f3ceaa180ddba415b8b7d80f68"><div class="ttname"><a href="worksheet_8h.html#a915c52f231594642bad90422c5b2cf81a3a7fd9f3ceaa180ddba415b8b7d80f68">LXW_OBJECT_MOVE_AND_SIZE</a></div><div class="ttdeci">@ LXW_OBJECT_MOVE_AND_SIZE</div><div class="ttdef"><b>Definition:</b> worksheet.h:541</div></div>
<div class="ttc" id="astructlxw__row__col__options_html_a0e46063d954292f4018ecb91621b7562"><div class="ttname"><a href="structlxw__row__col__options.html#a0e46063d954292f4018ecb91621b7562">lxw_row_col_options::hidden</a></div><div class="ttdeci">uint8_t hidden</div><div class="ttdef"><b>Definition:</b> worksheet.h:718</div></div>
<div class="ttc" id="astructlxw__image__options_html_a3affe5a43c455cc61f8e56a0d6d742d4"><div class="ttname"><a href="structlxw__image__options.html#a3affe5a43c455cc61f8e56a0d6d742d4">lxw_image_options::object_position</a></div><div class="ttdeci">uint8_t object_position</div><div class="ttdef"><b>Definition:</b> worksheet.h:1280</div></div>
<div class="ttc" id="astructlxw__image__options_html"><div class="ttname"><a href="structlxw__image__options.html">lxw_image_options</a></div><div class="ttdoc">Options for inserted images.</div><div class="ttdef"><b>Definition:</b> worksheet.h:1264</div></div>
<div class="ttc" id="astructlxw__workbook_html"><div class="ttname"><a href="structlxw__workbook.html">lxw_workbook</a></div><div class="ttdoc">Struct to represent an Excel workbook.</div><div class="ttdef"><b>Definition:</b> workbook.h:273</div></div>
<div class="ttc" id="aworksheet_8h_html_ac208046e7a6d12cc87982422efa41b31"><div class="ttname"><a href="worksheet_8h.html#ac208046e7a6d12cc87982422efa41b31">worksheet_write_string</a></div><div class="ttdeci">lxw_error worksheet_write_string(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col, const char *string, lxw_format *format)</div><div class="ttdoc">Write a string to a worksheet cell.</div></div>
<div class="ttc" id="aworksheet_8h_html_a0b05e75e2c2a5c3452374714cdb2b79b"><div class="ttname"><a href="worksheet_8h.html#a0b05e75e2c2a5c3452374714cdb2b79b">worksheet_insert_image_opt</a></div><div class="ttdeci">lxw_error worksheet_insert_image_opt(lxw_worksheet *worksheet, lxw_row_t row, lxw_col_t col, const char *filename, lxw_image_options *options)</div><div class="ttdoc">Insert an image in a worksheet cell, with options.</div></div>
<div class="ttc" id="aworksheet_8h_html_a9656e4e05d3787eee6b3e4d8e82d9b7f"><div class="ttname"><a href="worksheet_8h.html#a9656e4e05d3787eee6b3e4d8e82d9b7f">worksheet_set_column</a></div><div class="ttdeci">lxw_error worksheet_set_column(lxw_worksheet *worksheet, lxw_col_t first_col, lxw_col_t last_col, double width, lxw_format *format)</div><div class="ttdoc">Set the properties for one or more columns of cells.</div></div>
<div class="ttc" id="autility_8h_html_ad510ac6df573d23203374e24dba373d2"><div class="ttname"><a href="utility_8h.html#ad510ac6df573d23203374e24dba373d2">CELL</a></div><div class="ttdeci">#define CELL(cell)</div><div class="ttdoc">Convert an Excel A1 cell string into a (row, col) pair.</div><div class="ttdef"><b>Definition:</b> utility.h:45</div></div>
<div class="ttc" id="aworkbook_8h_html_a81d456b4f65a464e78e4a0030ecc3c2e"><div class="ttname"><a href="workbook_8h.html#a81d456b4f65a464e78e4a0030ecc3c2e">workbook_add_worksheet</a></div><div class="ttdeci">lxw_worksheet * workbook_add_worksheet(lxw_workbook *workbook, const char *sheetname)</div><div class="ttdoc">Add a new worksheet to a workbook.</div></div>
<div class="ttc" id="aworkbook_8h_html_a279a5d7075d09a3931aae9782afede33"><div class="ttname"><a href="workbook_8h.html#a279a5d7075d09a3931aae9782afede33">workbook_add_format</a></div><div class="ttdeci">lxw_format * workbook_add_format(lxw_workbook *workbook)</div><div class="ttdoc">Create a new Format object to formats cells in worksheets.</div></div>
<!-- HTML footer for doxygen 1.8.20-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Copyright 2014-2020 John McNamara.
Generated by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20
</small></address>
</body>
</html>
